(function () {

  const HERO_IST =
    "https://fs.getcourse.ru/fileservice/file/download/a/176040/sc/197/h/d982cbdbab960924010f9f3786c812ea.webp";

  const HERO_OBSH =
    "https://fs.getcourse.ru/fileservice/file/download/a/176040/sc/246/h/e44626df7880b9dfec4f2701ba268ab3.webp";


  function addBannerImage(selector, image, className) {

    const banner = document.querySelector(selector);

    if (!banner) return;


    if (banner.querySelector("." + className)) return;


    const img = document.createElement("img");

    img.className = className;

    img.src = image;

    img.loading = "eager";

    img.fetchPriority = "high";

    img.decoding = "async";


    banner.appendChild(img);

  }


  function initBanners(){

    addBannerImage(
      ".al_main-banner-ist.mHeader",
      HERO_IST,
      "my-training-fast-img"
    );


    addBannerImage(
      ".al_main-banner-obsh.mHeader",
      HERO_OBSH,
      "my-training-obsh-img"
    );

  }


  initBanners();

  document.addEventListener(
    "DOMContentLoaded",
    initBanners
  );


})();



/* =========================================================
   ЕГЭ НАЛЕГКЕ — ПОИСК УРОКОВ
   ========================================================= */

(function () {

    "use strict";


    /* =====================================================
       НАСТРОЙКИ
       ===================================================== */

    var INPUT_SELECTOR = "#SearchInput";

    var CARD_SELECTOR =
        ".enl-lesson-card";


    /* =====================================================
       НОРМАЛИЗАЦИЯ ТЕКСТА
       ===================================================== */

    function normalizeText(text) {

        return String(text || "")
            .toLowerCase()
            .replace(/\u00a0/g, " ")
            .replace(/ё/g, "е")
            .replace(/\s+/g, " ")
            .trim();

    }


    /* =====================================================
       ПОЛУЧАЕМ ТЕКСТ УРОКА
       ===================================================== */

    function getLessonText(card) {

        var original =
            card.dataset.enlOriginalText || "";

        var visible =
            card.innerText ||
            card.textContent ||
            "";

        return normalizeText(
            original + " " + visible
        );

    }


    /* =====================================================
       ПОКАЗАТЬ / СКРЫТЬ УРОКИ
       ===================================================== */

    function filterLessons(input) {

        var query =
            normalizeText(input.value);


        var cards =
            document.querySelectorAll(
                CARD_SELECTOR
            );


        cards.forEach(function (card) {

            var text =
                getLessonText(card);


            var row =
                card.closest(
                    ".enl-lesson-row, li, tr"
                );


            var target =
                row || card;


            if (
                !query ||
                text.indexOf(query) !== -1
            ) {

                target.style.display = "";

            } else {

                target.style.display = "none";

            }

        });

    }


    /* =====================================================
       ПОДКЛЮЧАЕМ ПОИСК
       ===================================================== */

    function initSearch() {

        var input =
            document.querySelector(
                INPUT_SELECTOR
            );


        if (!input) {
            return;
        }


        /*
         * Не подключаем обработчик второй раз
         */

        if (
            input.dataset.enlSearchReady === "1"
        ) {

            return;

        }


        input.dataset.enlSearchReady = "1";


        input.addEventListener(
            "input",
            function () {

                filterLessons(input);

            }
        );


        /*
         * Enter
         */

        input.addEventListener(
            "keydown",
            function (event) {

                if (
                    event.key === "Enter"
                ) {

                    event.preventDefault();

                    filterLessons(input);

                }

            }
        );


        /*
         * Кнопка очистки
         */

        var clear =
            input.closest(
                ".SearchBlock"
            );


        if (clear) {

            var clearButton =
                clear.querySelector(
                    ".SearchBlock__clear"
                );


            if (clearButton) {

                clearButton.addEventListener(
                    "click",
                    function (event) {

                        event.preventDefault();

                        input.value = "";

                        filterLessons(input);

                        input.focus();

                    }
                );

            }

        }


        filterLessons(input);

    }


    /* =====================================================
       ЗАПУСК
       ===================================================== */

    function startSearch() {

        initSearch();


        /*
         * GetCourse может создать
         * HTML-блок немного позже.
         */

        setTimeout(
            initSearch,
            300
        );


        setTimeout(
            initSearch,
            1000
        );


        setTimeout(
            initSearch,
            2000
        );

    }


    if (
        document.readyState === "loading"
    ) {

        document.addEventListener(
            "DOMContentLoaded",
            startSearch,
            {
                once: true
            }
        );

    } else {

        startSearch();

    }


})();


/* =========================================================
   УНИВЕРСАЛЬНОЕ ОФОРМЛЕНИЕ ЗАДАНИЯ GETCOURSE
   ========================================================= */

$(() => {

    function initLessonMission() {

        const $form =
            $('#lessonAnswerForm');

        if (!$form.length) {
            return;
        }

/* ==========================================
   СКРЫВАЕМ ВНЕШНИЙ СИСТЕМНЫЙ ЗАГОЛОВОК
   "Задание"
   ========================================== */

const mission =
  document.querySelector('.lesson-mission-wrapper');

if (mission) {

  let prev = mission.previousElementSibling;

  while (prev) {

    const text =
      (prev.textContent || '').trim();

    if (text === 'Задание') {

      prev.style.display = 'none';

      break;
    }

    prev = prev.previousElementSibling;
  }
}
    
        const $wrapper =
            $('.lesson-mission-wrapper').first();

        if (!$wrapper.length) {
            return;
        }


        /* =================================================
           1. УБИРАЕМ ШТАТНЫЙ ЗАГОЛОВОК
           ================================================= */

        $('.lesson-mission-header').remove();


        /*
         * Если наш заголовок уже создан —
         * второй раз его не создаём.
         */

        if (
            !$wrapper.find(
                '.lesson-mission-custom-header'
            ).length
        ) {

            const $header =
                $('<div>')
                    .addClass(
                        'lesson-mission-custom-header'
                    )
                    .text('задание');


            $wrapper.prepend(
                $header
            );

        }


        /* =================================================
           2. НАХОДИМ ЧЕКБОКС
           ================================================= */

        const $checkbox =
            $form.find(
                '.addfield-type-checkbox input[type="checkbox"]'
            ).first();


        if (!$checkbox.length) {
            return;
        }


        const $field =
            $checkbox.closest(
                '.addfield-type-checkbox'
            );


        /* =================================================
           3. ПОЛУЧАЕМ НАЗВАНИЕ ЧЕКБОКСА
           ================================================= */

        let buttonText = 'Отправить ответ';


        let labelText =
            $.trim(
                $field
                    .find('label')
                    .first()
                    .text()
            );


        if (!labelText) {

            labelText =
                $.trim(
                    $field.text()
                );

        }


        /*
         * Убираем служебную часть GetCourse:
         *
         * - * обязательное поле
         *
         * или
         *
         * * обязательное поле
         */

        labelText =
            labelText
                .replace(
                    /\s*[-–—]\s*\*\s*обязательное поле.*$/i,
                    ''
                )
                .replace(
                    /\s*\*\s*обязательное поле.*$/i,
                    ''
                )
                .trim();


        if (labelText) {

            buttonText =
                labelText;

        }


        /* =================================================
           4. ОТМЕЧАЕМ ЧЕКБОКС
           ================================================= */

        $checkbox.prop(
            'checked',
            true
        );


        $field.hide();


        /* =================================================
           5. НАСТРАИВАЕМ КНОПКУ
           ================================================= */

        const $button =
            $form
                .find(
                    '.btn-send-answer'
                )
                .first();


        if (!$button.length) {
            return;
        }


        $button
            .text(
                buttonText
            )
            .css({

                'display': 'inline-flex',

                'align-items': 'center',

                'justify-content': 'center',

                'width': 'auto',

                'min-width': '0',

                'max-width': 'none',

                'height': 'auto',

                'min-height': '46px',

                'padding': '10px 24px',

                'margin': '0',

                'box-sizing': 'border-box',

                'white-space': 'normal',

                'overflow': 'visible',

                'text-overflow': 'clip',

                'flex': '0 0 auto'

            });


        /* =================================================
           6. УБИРАЕМ ЧЕРНОВИК
           ================================================= */

        $form
            .find('.btn-save-draft')
            .hide();


        /* =================================================
           7. ЗАЩИТА ОТ ДВОЙНОГО НАЖАТИЯ
           ================================================= */

        $button.off(
            '.lessonMission'
        );


        let inFlight = false;


        $button.on(
            'click.lessonMission',
            function () {

                if (inFlight) {
                    return;
                }


                inFlight = true;


                const $btn =
                    $(this);


                const originalText =
                    $btn.text();


                $btn
                    .addClass(
                        'is-disabled'
                    )
                    .text(
                        'Отправляю…'
                    );


                let observer =
                    null;


                const cleanup =
                    () => {

                        $(document)
                            .off(
                                '.lessonMissionSend'
                            );


                        if (observer) {

                            observer.disconnect();

                        }


                        inFlight =
                            false;

                    };


                const onSuccess =
                    () => {

                        $btn
                            .text(
                                'Отправлено'
                            )
                            .hide();


                        cleanup();

                    };


                const onError =
                    () => {

                        $btn
                            .removeClass(
                                'is-disabled'
                            )
                            .text(
                                originalText
                            );


                        cleanup();

                    };


                $(document)
                    .on(
                        'ajaxSuccess.lessonMissionSend',
                        onSuccess
                    );


                $(document)
                    .on(
                        'ajaxError.lessonMissionSend',
                        onError
                    );


                observer =
                    new MutationObserver(
                        () => {

                            if (
                                document.querySelector(
                                    '.message-success, .alert-success, .gc-success, .lesson-answers, .successMessage'
                                )
                            ) {

                                onSuccess();

                            }

                        }
                    );


                observer.observe(
                    document.body,
                    {
                        childList: true,
                        subtree: true
                    }
                );


                setTimeout(
                    () => {

                        if (inFlight) {

                            onError();

                        }

                    },
                    15000
                );

            }
        );

    }


    /* =====================================================
       ЗАПУСК
       ===================================================== */

    initLessonMission();


    /*
     * GetCourse может дорисовать форму
     * после первоначальной загрузки.
     *
     * Поэтому проверяем ещё раз.
     */

    setTimeout(
        initLessonMission,
        500
    );


    setTimeout(
        initLessonMission,
        1500
    );


});


// ===== НАГРАДЫ =====

(function(){

    const gallery = $('.achv-gallery').first();

    if (!gallery.length) return;


    const source = $('.achv-source').first();

    if (!source.length) {

        console.log('Нет блока achv-source');

        return;

    }



    // чтобы не дублировалось при повторной загрузке

    if (gallery.data('loaded')) return;

    gallery.data('loaded', true);



    // заголовок

    gallery.prepend(
        '<div class="achv-head"><span class="icon"></span>твои награды</div>'
    );



    // контейнер карточек

    const list = $('<div class="achv-list"></div>');

    gallery.append(list);



    // ищем награды

    const images = source.find('img');


    console.log(
        'Найдено наград:',
        images.length
    );



    images.each(function(){


        let src = $(this).attr('src');


        if (!src) return;



        // получаем оригинальную картинку GetCourse

        src = src
        .replace(
            /fs-thb\d*\.getcourse\.ru/,
            'fs.getcourse.ru'
        )
        .replace(
            '/thumbnail/',
            '/download/'
        )
        .replace(
            /\/s\/[^\/]+/,
            ''
        );



        const card = `

            <div class="achv-card">

                <div class="achv-thumb">

                    <img 
                    src="${src}" 
                    loading="lazy">

                </div>

            </div>

        `;



        list.append(card);


    });



    // если награды есть — включаем слайдер

    if (images.length) {


        list.wrap(
            '<div class="achv-viewport"></div>'
        );



        gallery.append(`

    <button class="achv-btn prev">
        <img src="https://fs.getcourse.ru/fileservice/file/download/a/943938/sc/154/h/dafe4916d5292b66064b28095beab857.svg">
    </button>

    <button class="achv-btn next">
        <img src="https://fs.getcourse.ru/fileservice/file/download/a/943938/sc/154/h/dafe4916d5292b66064b28095beab857.svg">
    </button>

`);



        gallery.find('.achv-btn.next').on('click',function(){


            gallery.find('.achv-viewport')[0]
            .scrollBy({

                left:300,

                behavior:'smooth'

            });


        });



        gallery.find('.achv-btn.prev').on('click',function(){


            gallery.find('.achv-viewport')[0]
            .scrollBy({

                left:-300,

                behavior:'smooth'

            });


        });


    }



})();

